package com.kygeng.springframework.beans.factory;

import com.kygeng.springframework.beans.BeansException;
import com.kygeng.springframework.beans.factory.config.AutowireCapableBeanFactory;
import com.kygeng.springframework.beans.factory.config.BeanDefinition;
import com.kygeng.springframework.beans.factory.config.BeanPostProcessor;
import com.kygeng.springframework.beans.factory.config.ConfigurableBeanFactory;

/**
 * @Title: ConfigurableListableBeanFactory
 * @Author: kygeng
 * @Package: com.kygeng.springframework.beans
 * @Date: 2024/7/22 9:42
 * @Description: 提供分析和修改Bean，以及预先实例化的操作接口，用来配置和管理bean
 */
public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory {

    /**
     * 根据名称查找BeanDefinition
     *
     * @param beanName
     * @return
     * @throws BeansException
     */
    BeanDefinition getBeanDefinition(String beanName) throws BeansException;

    /**
     * 提前实例化 bean对象
     */
    void preInstantiateSingletons() throws BeansException;
}
